کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

دسترسی به تصاویر از طریق Resource File

شرح مختصر پروژه

در برنامه ساده ای که پیاده سازی خواهیم کرد، تعدادی تصویر در فایل .resx قرا می دهیم و در فرم اصلی اقدام به واکشی تصویر مورد نظر می کنیم.

توضیحات پروژه

کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.

سلام. با یکی دیگر از آموزش های C# در خدمت شما هستیم. در این مقاله قصد داریم کار کردن با فایل های منبع یا Resource Fileها را به شما آموزش دهیم.

معمولاً در فایل های منبع اطلاعاتی ذخیره می شود که مورد استفاده برنامه قرار می گیرند. در این فایل می توان تنظیمات برنامه، رشته ها، اشیاء یا فایل های باینری را ذخیره کرد. این اطلاعات بعداً به تگ های XML تبدیل می شوند. با استفاده از این فایل ها، می توانید متن یا گرافیک برنامه را بدون ویرایش کد، توسط خود برنامه، تغییر دهید. مثلاً در برنامه های چند زبانه، بدون نیاز به تغییر عبارت نمایش داده شده بر روی کنترل ها، می توان برای هر زبان یک فایل منبع ساخت و هنگام نمایش، با توجه به زبان محلی کاربر، عبارات مناسب را بر روی هر کنترل نشان داد.

در برنامه ساده ای که پیاده سازی خواهیم کرد، تعدادی تصویر در فایل .resx قرا می دهیم و در فرم اصلی اقدام به واکشی تصویر مورد نظر می کنیم.

نیازمندی ها

برای ساخت این پروژه کوچک، به نرم افزارهای زیر احتیاج خواهیم داشت:

·        Visual Studio 2013

ساخت فرم اصلی

برای ساخت پروژه، Visual Studio را باز کنید و به مسیر زیر بروید:

پروژه C#

در پنجره ای که باز می شود، مطمئن شوید از بین قالب های نصب شده، مطمئن شوید در مسیر زیر قرار دارید:

Template>Visual C#>Windows

سپس Windows Forms Application را انتخاب کرده و یک نام برای پروژه خود وارد کنید:

پروژه C#

فایل ها و فرم های ایجاد شده به شکل زیر خواهند بود:

پروژه C#

شروع به کار

می خواهیم تعدادی تصویر با اسامی مشخص، به عنوان فایل های منبع در پروژه ذخیره کنیم.

پروژه C#

 سپس به تعداد تصاویر دکمه بر روی فرم قرار می دهیم. قصد داریم با فشردن هر دکمه، تصویر مربوطه نمایش داده شود.

قبل از شروع، برای دسترسی به فایل های منبه باید فضای نام زیر را در فرم مورد نظر import کنیم:

using System.Resources;

به همین منظور هشت Button (به تعداد تصاویر) و یک PictureBox بر روی فرم قرار می دهیم. خاصیت Text هر Button را برابر با نام یکی از تصاویر قرار دهید.نام PictureBox را به picFromResource و خاصیت SizeMode آن را به StretchImage تغییر دهید:

پروژه C#

برای ایجاد فایل منبع یا همان ResourceFile بر روی نام پروژه در Solution Explorer راست کلیک کرده و گزینه Add>New Item را انتخاب کنید:

پروژه C#

سپس در نجره باز شده، گزینه Resources File را انتخاب کنید و نام ImageResource.resx را در فیلد ورود نام، وارد کنید:

پروژه C#

به این ترتیب یک فایل با پسوند .resx به پروژه اضافه می شود:

پروژه C#

در صورت باز نبودن، بر روی نام فایل (ImageResource.resx) دوبار کلیک کنید. در صفحه باز شده، از منوی سمت چپ در آن، گزینه Images را انتخاب کنید (یا به راحتی کلید میانبر Ctrl+2 را فشار دهید):

پروژه C#

حالا باید تصاویر مورد نظر را داخل این پنجره بکشید. با این کار تصاویر در پوشه منبع کپی می شوند و از طریق فایل منبع به آن ها دسترسی خواهیم داشت.

پروژه C#

همه چیز برای کد نویسی آماده شده است!!

فرم اصلی را باز کنید و با فشردن دکمه F7 وارد قسمت کد نویسی شوید. می خواهیم یک تابع بنویسیم که با رویداد کلیک هر دکمه فراخوانی و اجرا شود:

private void SelectItem(object sender, EventArgs e)

{

   //Dastoorat

}

حالا بر روی Button اول کلیک کنید و در پنجره Properties، وارد قسمت رخدادهای کنترل مربوطه بشوید:

پروژه C#

از بین رخدادهای نمایش داده شده، در رویداد Click، نام متدی که در ابلا تعریف کرده ایم را وارد می کنیم:

پروژه C#

این کار را برای سایر دکمه ها تکرار می کنیم.

می خواهیم در این تابع، دکمه ای که باعث رخداد Click شده است در پارامتر sender قرار می گیرد و می توانیم با استفاده از آن به خواص دکمه مورد نظر دسترسی پیدا کنیم. سپس خاصیت Text آن را استخراج می کنیم و به عنوان ورودی تابع LoadItem ارسال می کنیم:

private void SelectItem(object sender, EventArgs e)

{

   Button btnIndex = (Button)sender;

   LoadItem(btnIndex.Text);

}

در تابع LoadItem متن روی دکمه به عنوان پارامتر ورودی دریافت می شود و سعی می کند با دسترسی به فایل منبع، تصویر مورد نظر را استخراج کند و در picFromResource نمایش دهد:

private void LoadItem(string resourceName)

{

   try

   {

       ResourceManager rm = new ResourceManager(typeof(ImageResource));

 

       Bitmap objImage = (Bitmap)rm.GetObject(resourceName);

 

       if (objImage != null)

       {

           picFromResource.SizeMode = PictureBoxSizeMode.StretchImage;

           picFromResource.Image = objImage;

       }

       else

       {

           picFromResource.SizeMode = PictureBoxSizeMode.Normal;

           picFromResource.Image = picFromResource.ErrorImage;

       }

   }

   catch (Exception ex)

   {

       MessageBox.Show(ex.ToString());

   }

}

در متد فوق برای واکشی فایل های منبع از کلاس ResourceManager استفاده کرده ایم. در متد سازنده این کلاس، تابع typeof نام فایل .resx را به عنوان پارامتر ورودی دریافت می کند.با این کار یک نمونه از فایل منبع ایجاد کرده ایم.

ResourceManager rm = new ResourceManager(typeof(ImageResource));

سپس از طریق متد GetObject، که نام تصویر یا به عبارتی همان متن روی دکمه را به عنوان پارامتر ورودی دریافت می کند و شی مورد نظر را از بین فایل های موجود در منبع، استخراج می کند:

rm.GetObject(resourceName);

کافیست با استفاده از TypeCasting نوع شی دریافتی را به Bitmap تغییر دهیم و یک شی از روی آن بسازیم:

Bitmap objImage = (Bitmap)rm.GetObject(resourceName);

در مرحله بعد چک میکند که اگر تصویر در منبع پیدا شد (objImage != null)، آن را به خاصیت Image کنترل picFromResoure اختصاص می دهد. در غیر اینصورت به جای تصویر، یک ضربدر در کنترل مربوطه قرار می دهد:

if (objImage != null)

{

   picFromResource.SizeMode = PictureBoxSizeMode.StretchImage;

   picFromResource.Image = objImage;

}

else

{

   picFromResource.SizeMode = PictureBoxSizeMode.Normal;

   picFromResource.Image = picFromResource.ErrorImage;

}

با اجرای برنامه می بینید که با فشردن هر دکمه، تصویر تغییر می کند و تصویری نمایش داده می شود که که هم نام با متن نمایش داده شده بر روی دکمه فشرده شده باشد:

پروژه C#

سخن آخر

امیدوار هستیم از این آموزش لذت برده باشید و بتوانید به راحتی از آن استفاده کنید. البته فایل پروژه نیز از سایت، قابل دانلود می باشد.

 

 

1394/10/16 16623 2051
رمز عبور : tahlildadeh.com یا www.tahlildade.com
نظرات شما

نظرات خود را ثبت کنید...






آموزش برنامه نویسی mahdi h.k.m 1395/04/24
عالی

ممنون عالی بود خسته نباشید